图片识别,人脸识别,签到小程序,借助百度AI智能识别功能 |
您所在的位置:网站首页 › 如何使用 ai 去实现人脸识别 › 图片识别,人脸识别,签到小程序,借助百度AI智能识别功能 |
一,人脸签到效果图
我们做人脸识别签到,其实就是要拿识别的人脸和数据库里的人脸对比,相识度大于一定的值,就可以判定成功。
我们这里使用了百度的图片识别技术,所以在使用之前我们要现在注册百度开发者账号,官方地址:https://ai.baidu.com
注册地址:https://login.bce.baidu.com
至于如何注册,这里不需要我再教了吧,大家自行注册就行了。
我们主要用到的是人脸识别技术
现在使用百度图片识别,必须要实名认证下。
我们这里主要使用的是百度的人脸对比功能,就是事先把要识别人的照片存到百度数据库,然后打卡时,让对应的人拍好照,和数据库里存的人脸图片进行对比,相似度达到一定数值,比如90%相似度,就可以认为识别成功,进行签到即可。
人脸识别官方文档:https://cloud.baidu.com/product/face 点击免费领取资源
我们在自己的小程序里接入人脸识别,就必须去看百度官方的技术文档。
文档地址:https://ai.baidu.com/ai-doc/FACE/Lk37c1tpf
我们这里主要就看这个人脸对比文档。
我们要想实现人脸识别,就需要一开始先在百度的可视化人脸库里注册人脸,要调用的接口如下。
我们后面做的所有操作,基本上都要获取这个。
第二步和第三步要同时进行,所以我把代码放到下面第三步 3-2-3,注册人脸到百度人脸库我们在拍照以后,获取到图片,并通过 wx.getFileSystemManager().readFile()方法把图片转换为base64,因为百度需要这样格式的数据
这几个参数,要记得换成自己的 group_id: 'users', //自己建的用户组id user_id: app.globalData.userInfo.phone, //学号或者用户电话能唯一标识用户的 user_info: app.globalData.userInfo.name //存储用户姓名我们注册完以后,可以在百度人脸库里看到这条数据,可以看到我们创建的users表。
我们进入百度的控制台,找到如下的类目
我们上面注册好人脸以后,接下来就可以使用人脸打卡功能了。 使用之前还是第一步,获取acess_token 4-1,获取acess_token // acess_token获取 getTokenInfo() { var that = this wx.request({ url: 'https://aip.baidubce.com/oauth/2.0/token', data: { grant_type: 'client_credentials', client_id: app.globalData.client_id, //应用的API Key client_secret: app.globalData.client_secret //Secret Key }, header: { 'Content-Type': 'application/json' // 默认值 }, success(res) { that.setData({ token: res.data.access_token //获取到token }) console.log(that.data.token) } }) }, 4-2,人脸比对核心代码如下: //拍照并编码 takePhoto() { let that=this const ctx = wx.createCameraContext() ctx.takePhoto({ quality: 'high', success: (res) => { //图片base64编码 wx.getFileSystemManager().readFile({ filePath: res.tempImagePath, //选择图片返回的相对路径 encoding: 'base64', //编码格式 success: res => { //成功的回调 that.signInFace(res.data) } }) } }) }, //上传人脸进行 比对 signInFace(base64) { var that = this if (base64 != "") { wx.request({ url: 'https://aip.baidubce.com/rest/2.0/face/v3/search?access_token=' + that.data.token, method: 'POST', data: { image: base64, image_type: 'BASE64', group_id_list: 'users' //自己建的用户组id }, header: { 'Content-Type': 'application/json' // 默认值 }, success(res) { console.log("人脸对比返回结果", res) if (res.data.error_msg == "match user is not found") { wx.showModal({ title: '签到失败', content: '请先注册人脸才可以人脸使用', }) } if (res.data.error_msg == "SUCCESS") { that.setData({ msg: res.data.result.user_list[0].score, }) // console.log(res) if (that.data.msg > 80) { //相似度大于80 console.log('人脸识别成功') } else { wx.showToast({ title: '人脸识别失败', }) } } else { wx.showToast({ title: '人脸识别失败', }) } } }); } if (base64 == "") { wx.showToast({ title: '请重试', icon: 'loading', duration: 500 }) } },我们执行代码以后,会返回一个相识度,我这里规定相识度80%以上即为同一个人。
|
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |